package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import bean.Conexion;

public class JugadorDAO extends ConexionDAO{

	public JugadorDAO() {
		super();
	}	
	
	public int contarMejores(int nivel){
		int cont = 0;
		String tiraSQL = "SELECT count(nivel) as cantidad FROM jugador WHERE nivel = "+ nivel + " GROUP BY nivel";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		try {
			if (resultSet.next())
				cont = resultSet.getInt("cantidad");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return cont;
	}
	
	
	public long busquedaMayor(int nivel){
		long mayor = 0;
		int cont;
		String tiraSQL = "SELECT tiempo FROM jugador WHERE nivel = "+ nivel +
						 " ORDER BY tiempo ASC";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		if (contarMejores(nivel)>5)
			cont = 5;
		else
			cont = contarMejores(nivel);
		try {
			for(int i=0;i<cont;i++)
				resultSet.next();
			mayor = resultSet.getLong("tiempo");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return mayor;
	}
	
	public void registrarJugador(Jugador jugador) {
		String tiraSQL = "INSERT INTO jugador (nombre, tiempo, nivel) "+
			 			 "VALUES ('"+jugador.getNombre()+ "',"+jugador.getTiempo()+
			 			 ","+jugador.getNivel()+" )";
		Conexion.ejecutar(tiraSQL);
	}
	
	public List<Jugador> consultarJugadores(int nivel) {
		List<Jugador> jugadores = new ArrayList<Jugador>();
		int cont;
		String tiraSQL = "SELECT * FROM jugador WHERE nivel = "+ nivel +
						 " ORDER BY tiempo ASC";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		if (contarMejores(nivel)>5)
			cont = 5;
		else
			cont = contarMejores(nivel);
		try {
			for(int i=0;i<cont;i++){
				resultSet.next();
				String nombre = resultSet.getString("nombre");
				Long tiempo = resultSet.getLong("tiempo");
				Jugador jugador = new Jugador(nombre, tiempo, nivel);
				jugadores.add(jugador);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return jugadores;
	}
	
}
